package com.learn.javase.chapter18.reflect.proxy.jdk;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;

/**
 * @author wsh
 * @date 2022-05-11 15:22
 */
public class TestReflectProxy2 {
    public static void main(String[] args) {
        // 1、创建目标类
        InvocationHandler myInvocationHandler = new MyInvocationHandler();
        // 2、直接生成Person接口的代理对象
        Person person = (Person) Proxy.newProxyInstance(Person.class.getClassLoader(), new Class[]{Person.class}, myInvocationHandler);
        // 3、调用代理对象的方法。都会转成对InvocationHandler.invoke()的调用（即调用真实的服务）
        person.walk();
        person.sayHello();
        /**
         * 输出结果：
         * 正在执行方法：walk
         * 该方法调用无实参！
         * 正在执行方法：sayHello
         * 该方法调用无实参！
         */
    }
}
